#include<stdio.h>
#include<algorithm>
using namespace std;
const int maxn=100;
int s[2][9]={
  0,0,0,-1,-1,-1,-2,-2,-3,
  -1,-2,-3,0,-1,-2,0,-1,0,
}; 
int main()
{
	int a[maxn][maxn],dp[maxn][maxn];
	int m,n;
	scanf("%d%d",&m,&n);
	for(int i=0;i<m;i++){
		for(int j=0;j<n;j++){
			scanf("%d",&a[i][j]);
		}
	}
	dp[0][0]=a[0][0];
	for(int i=0;i<m;i++){
		for(int j=0;j<n;j++){
			for(int k=0;k<9;k++){
				int nx=i+s[0][k];
				int ny=j+s[1][k];
				if(nx<0||ny<0||nx>=m||ny>=n)
					continue;
				dp[i][j]=max(dp[i][j],dp[nx][ny]+a[i][j]);
			}
		}
	}
	printf("%d",dp[m-1][n-1]);
	return 0;
}
